#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc, char *argv[])
{
    if(argc != 2) exit(1);
    //close(0);
    //close(2);
    //close(1);
    //int fd = open("log.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
   // printf("fd: %d\n",fd);
    int fd = open(argv[1],O_RDONLY);

    if(fd < 0) exit(1);

    dup2(fd,0);
    close(fd);
   
    while(1)
    {
        char buffer[64];
        if(!fgets(buffer,sizeof(buffer),stdin)) break;
        printf("%s",buffer);
    }


    //默认向显示器输入
   // printf("fd: %d\n",fd);
   // printf("hello bit\n");
   // printf("hello bit\n");
   // printf("hello bit\n");
   // fprintf(stdout,"hello stdout\n");
   // fprintf(stdout,"hello stdout\n");
   // fprintf(stdout,"hello stdout\n");
   // fprintf(stdout,"hello stdout\n");

   // const char *msg = "hello world\n";
   // write(fd, msg, strlen(msg));

    //umask(0);

    //printf("stdin: %d\n",stdin->_fileno);
    //printf("stdout: %d\n",stdout->_fileno);
    //printf("stderr: %d\n",stderr->_fileno);


    //int fd1 = open("log.txt1",O_CREAT | O_WRONLY | O_TRUNC,0666);
    //int fd2 = open("log.txt2",O_CREAT | O_WRONLY | O_TRUNC,0666);
    //int fd3 = open("log.txt3",O_CREAT | O_WRONLY | O_TRUNC,0666);
    //int fd4 = open("log.txt4",O_CREAT | O_WRONLY | O_TRUNC,0666);
    //if(fd1<0) exit(1);
    //if(fd2<0) exit(1);
    //if(fd3<0) exit(1);
    //if(fd4<0) exit(1);

    //printf("fd1: %d\n",fd1);
    //printf("fd2: %d\n",fd2);
    //printf("fd3: %d\n",fd3);
    //printf("fd4: %d\n",fd4);

    //close(fd1);
    //close(fd2);
    //close(fd3);
    //close(fd4);








    //int fd = open("log.txt",O_CREAT | O_WRONLY | O_APPEND,0666);
    //int fd = open("log.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
   // int fd = open("log.txt",O_RDONLY);
   // if(fd < 0)
   // {
   //     perror("open");
   //     return 1;
   // }
   // printf("fd:%d\n",fd);

   // while(1)
   // {
   //     char buffer[64];
   //     int n= read(fd,buffer,sizeof(buffer)-1);
   //     if(n > 0)
   //     {
   //         buffer[n]=0;
   //         printf("%s",buffer);
   //     }
   //     else if(n == 0)
   //     {
   //         break;
   //     }
   // }




   // const char *msg="abcd\n";
   // int cnt=1;
   // int a=1234567;
   // while(cnt)
   // {
   //     //当作字符来写
   //    // write(fd,msg,strlen(msg));
   //     //write(fd,&a,sizeof(a));
   //     
   //     char buffer[16];
   //     snprintf(buffer,sizeof(buffer),"%d",a);
   //     write(fd,buffer,strlen(buffer));
   //     cnt--;
   // }
    //close(fd);

    return 0;
}
